﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Data.OleDb;

namespace giaodien
{
    public partial class QLNhanVien : Form
    {
        static string Ten;
        static string Ma;
        static Thread ThreadDangXuat;
        static Thread ThreadQlNhapHang;
        DataTable dt = new DataTable();
        public QLNhanVien()
        {
            InitializeComponent();
        }
        //
        ConnectData obj = new ConnectData();
        public static void LayTen(string TenGui,string MaGui)
        {
            Ten = TenGui;
            Ma = MaGui;
        }

        #region Hàm Làm Mới
        void lammoi()
        {
            txttennv.ReadOnly = false;
            txtdchinv.ReadOnly = false;
            txtsdtnv.ReadOnly = false;
            txtcmndnv.ReadOnly = false;
            txttendangnhap.ReadOnly = false;
            txtmk.ReadOnly = false;
            cbbloainv.Enabled = true;
            cbbgioitinhnv.Enabled = true;
            datengaysinh.Enabled = true;
            txtmanv.Text = "";
            txttendangnhap.Text = "";
            txttennv.Text = "";
            txtsdtnv.Text = "";
            txtmk.Text = "";
            txtdchinv.Text = "";
            txtcmndnv.Text = "";
            cbbgioitinhnv.SelectedIndex = -1;
            cbbloainv.SelectedIndex = -1;
            datengaysinh.Text = "";
        }
        void lammoi2()
        {
            txttennv.ReadOnly = true;
            txtdchinv.ReadOnly = true;
            txtsdtnv.ReadOnly = true;
            txtcmndnv.ReadOnly = true;
            txttendangnhap.ReadOnly = true;
            txtmk.ReadOnly = true;
            cbbloainv.Enabled =false;
            cbbgioitinhnv.Enabled =false;
            datengaysinh.Enabled = false;
            txtmanv.Text = "";
            txttendangnhap.Text = "";
            txttennv.Text = "";
            txtsdtnv.Text = "";
            txtmk.Text = "";
            txtdchinv.Text = "";
            txtcmndnv.Text = "";
            cbbgioitinhnv.SelectedIndex = -1;
            cbbloainv.SelectedIndex = -1;
            datengaysinh.Text = "";
        }
        void lammoi3()
        {
            txttennv.ReadOnly = true;
            txtdchinv.ReadOnly = true;
            txtsdtnv.ReadOnly = true;
            txtcmndnv.ReadOnly = true;
            txttendangnhap.ReadOnly = true;
            txtmk.ReadOnly = true;
            cbbloainv.Enabled = false;
            cbbgioitinhnv.Enabled = false;
            datengaysinh.Enabled = false;
        }
        void lammoi4()
        {
            txtmanv.Text = "";
            txttendangnhap.Text = "";
            txttennv.Text = "";
            txtsdtnv.Text = "";
            txtmk.Text = "";
            txtdchinv.Text = "";
            txtcmndnv.Text = "";
            cbbgioitinhnv.SelectedIndex = -1;
            cbbloainv.SelectedIndex = -1;
            datengaysinh.Text = "";
        }
        #endregion

        #region Hiển Thị Danh Sách Nhân Viên Vào Listview
        
        void hienthilistnhanvien(DataTable dt,ListView danhsach)
        {
            danhsach.Items.Clear();
            foreach (DataRow dr in dt.Rows )
            {
                ListViewItem lvw = new ListViewItem();
                lvw.Text = dr["manv"].ToString();
                lvw.SubItems.Add(dr["tennv"].ToString ());
                lvw.SubItems.Add(dr["loai"].ToString());
                lvw.SubItems.Add(dr["gioitinh"].ToString());
                lvw.SubItems.Add(dr["dchinv"].ToString());
                lvw.SubItems.Add(dr["sdtnv"].ToString());
                lvw.SubItems.Add(dr["cmnd"].ToString());
                lvw.SubItems.Add(dr["tendangnhap"].ToString ());
                lvw.SubItems.Add(dr["matkhau"].ToString ());
                lvw.SubItems.Add(dr["nsinhnv"].ToString());
                danhsach.Items.Add(lvw);
            }
        }
        #endregion

        #region Tạo Mã Tự Động
        public string taomatudong(string automanv)
        {
            DataTable dt = new DataTable();
            string sql = "select top 1 manv from nhanvien order by manv desc";
            string laymalonnhathientai = "";
            int i = 0;
            dt = obj.laydulieuBang(sql);
            //ds = khachhang_BUS.automakh();
            if (dt.Rows.Count != 0)
            {
                laymalonnhathientai = dt.Rows[0][0].ToString();
                i = int.Parse(laymalonnhathientai.Substring(2, 3).ToString());
                i++;
                if (i < 10)
                    return "NV00" + i.ToString();
                else
                    return "NV0" + i.ToString();
            }
            else
            {
                return "NV001";
            }
        }
        #endregion

        #region Form Load
        private void QLNhanVien_Load(object sender, EventArgs e)
        {
            nutLuu.Enabled = false;
            cbbloainv.Enabled = false;
            cbbgioitinhnv.Enabled = false;
            datengaysinh.Enabled = false;
            lblXinChao.Text = "Xin chào " + Ten;
            ThreadDangXuat = new Thread(new ThreadStart(MoLaiDN));
            ThreadQlNhapHang = new Thread(new ThreadStart(MoNhapHang));
            string sql1 = "select * from nhanvien";
            dt = obj.laydulieuBang(sql1);
            hienthilistnhanvien(dt, listnhanvien);
        }
        #endregion

        #region Dịch Chuyển
        static void MoLaiDN() {
            Application.Run(new DN());
        }
        static void MoNhapHang() {
            Application.Run(new QLNhapHang());
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            UI.MouseDown(e);
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            UI.MouseMove(this, MousePosition.X, MousePosition.Y);
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            UI.MouseUp();
        }
        #endregion

        #region Liên Kết

        private void btnMini_Click(object sender, EventArgs e)
        {
            UI.Mini(this);
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            btnDangXuat_Click(null,null);
        }
        private void btnDangXuat_Click(object sender, EventArgs e)
        {
            this.Close();
            ThreadDangXuat.Start();
        }
        int key = -1;

        private void quảnLýNhậpHàngToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
            ThreadQlNhapHang.Start();
        }
        #endregion

        #region Kiểm Tra Nhập Số
        private void cbbgioitinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void cbbloaisp_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }
        private void txtsdtnv_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsDigit(e.KeyChar) == false && char.IsControl(e.KeyChar) == false)
                e.Handled = true;
        }
        #endregion

        #region MouseDown
        private void listnhanvien_MouseDown(object sender, MouseEventArgs e)
        {
            if (key == 0)
                MessageBox.Show("Bạn không thể chọn nhân viên khi đã nhân thêm", "Thông Báo");
            else
            {
                ListViewItem lvw = new ListViewItem();
                lvw = listnhanvien.GetItemAt(e.X, e.Y);
                if (lvw != null)
                {
                    txtmanv.Text = lvw.Text;
                    txttennv.Text = lvw.SubItems[1].Text;
                    if (lvw.SubItems[2].Text == "QL")
                        cbbloainv.SelectedIndex = 0;
                    else
                        cbbloainv.SelectedIndex = 1;
                    cbbgioitinhnv.Text = lvw.SubItems[3].Text;
                    txtdchinv.Text = lvw.SubItems[4].Text;
                    txtsdtnv.Text = lvw.SubItems[5].Text;
                    txtcmndnv.Text = lvw.SubItems[6].Text;
                    txttendangnhap.Text = lvw.SubItems[7].Text;
                    txtmk.Text = lvw.SubItems[8].Text;
                    datengaysinh.Text = lvw.SubItems[9].Text;
                }
                else
                {
                    lammoi2();
                    nutSua.Enabled = true;
                }
            }
        }
        #endregion

        #region Thêm Nhân Viên
        private void btnThem_Click(object sender, EventArgs e)
        {
            nutSua.Enabled = false;
            nutXoa.Enabled = false;
            nutthem.Enabled = false;
            nutLuu.Enabled = true;
            key = 0;
            lammoi();
        }
        #endregion

        #region Xóa Nhân Viên
        private void nutXoa_Click(object sender, EventArgs e)
        {
            if (listnhanvien.SelectedItems.Count == 0)
                MessageBox.Show("Bạn chưa chọn nhân viên để xóa");
            else
            {
                if (txtmanv.Text == Ma)
                    MessageBox.Show("Bạn không được xóa tài khoản của mình");
                else
                {
                    if (cbbloainv.Text == "Quản Lý")
                    {
                        DialogResult d = MessageBox.Show("Bạn có chắc muốn xóa Tài Khoản Admin này?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                        if (d == DialogResult.Yes)
                        {
                            if (obj.xoanv(txtmanv.Text) > 0)
                            {
                                MessageBox.Show("Xóa thành công");
                                string sql = "select * from nhanvien";
                                dt = obj.laydulieuBang(sql);
                                hienthilistnhanvien(dt, listnhanvien);
                                lammoi2();
                            }
                            else
                                MessageBox.Show("Xóa không thành công");
                        }
                    }
                    else
                    {
                        DialogResult d = MessageBox.Show("Bạn có chắc muốn xóa?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (d == DialogResult.Yes)
                        {
                            if (obj.xoanv(txtmanv.Text) > 0)
                            {
                                MessageBox.Show("Xóa thành công");
                                string sql = "select * from nhanvien";
                                dt = obj.laydulieuBang(sql);
                                hienthilistnhanvien(dt, listnhanvien);
                                lammoi2();
                            }
                            else
                                MessageBox.Show("Xóa không thành công");
                        }
                    }
                }
            }

        }
        #endregion

        #region Tìm Kiếm Nhân Viên
        private void nuttimkiemnv_Click(object sender, EventArgs e)
        {
            string sql = "select * from nhanvien where tennv like '%" + txttimkiemnv.Text + "%'";
            DataTable dt = new DataTable();
            dt = obj.laydulieutheocautruyvan(sql);
            hienthilistnhanvien(dt, listnhanvien);
        }
        #endregion

        #region Kiểm Tra Thông Tin Bị Trùng
        int kiemtrathongtinhbitrung()
        {
            int flag = 0;
            foreach (ListViewItem lvw in listnhanvien.Items)
            {
                if (txtcmndnv.Text == lvw.SubItems[6].Text)
                {
                    flag = 1;
                }
                else
                {
                    if (txttendangnhap.Text == lvw.SubItems[7].Text)
                    {
                        flag = 2;
                    }
                }
            }
                   return flag;
      }
        #endregion

        #region Sửa Nhân Viên
        private void nutSua_Click(object sender, EventArgs e)
        {
            if (listnhanvien.SelectedItems.Count == 0)
                MessageBox.Show("Bạn chưa chọn nhân viên để sửa");
            else
            {
                key = 1;
                txttennv.ReadOnly = false;
                txtdchinv.ReadOnly = false;
                txtsdtnv.ReadOnly = false;
                txtmk.ReadOnly = false;
                cbbloainv.Enabled = true;
                cbbgioitinhnv.Enabled = true;
                datengaysinh.Enabled = true;
                nutSua.Enabled = false;
                nutLuu.Enabled = true;
                nutthem.Enabled = false;
                nutXoa.Enabled = false;
            }
        }

        #endregion

        #region Lưu Nhân Viên
        private void nutLuu_Click(object sender, EventArgs e)
        {
            string l = "";
            if (cbbloainv.Text == "Quản Lý")
                l = "QL";
            else
                l = "NV";
            DataTable dt = new DataTable();
            if (key == -1)
                MessageBox.Show("Vui lòng chọn nút thêm hoặc sửa trước khi lưu","Thông Báo");
            if (key == 0)
            {
                if (txttennv.Text == "" || txttendangnhap.Text == "" || txtsdtnv.Text == "" || txtmk.Text == "" || txtdchinv.Text == "" || txtcmndnv.Text == "" ||cbbgioitinhnv.Text=="")
                    MessageBox.Show("Vui lòng điền đầy đủ thông tin!");
                else
                {
                    string ma = "";
                    txtmanv.Text = taomatudong(ma);
                    if (kiemtrathongtinhbitrung() == 1)
                        MessageBox.Show("Vui lòng chon số CMND khác");
                    else
                    {
                        if (kiemtrathongtinhbitrung() == 2)
                            MessageBox.Show("Vui lòng chon số tên đăng nhập khác");
                        else
                        {
                            if (txtcmndnv.TextLength < 9)
                                MessageBox.Show("Số CMND phải có đúng 9 số");
                            else
                            {
                                if (obj.themnv(txtmanv.Text, txttennv.Text, l, cbbgioitinhnv.Text, txtdchinv.Text, txtsdtnv.Text, txtcmndnv.Text, txttendangnhap.Text, txtmk.Text, datengaysinh.Value.ToString()) > 0)
                                {
                                    MessageBox.Show("Thêm thành công");
                                    string sql1 = "select * from nhanvien";
                                    dt = obj.laydulieuBang(sql1);
                                    hienthilistnhanvien(dt, listnhanvien);
                                    key = -1;
                                    nutXoa.Enabled = true;
                                    nutSua.Enabled = true;
                                    nutthem.Enabled = true;
                                    nutLuu.Enabled = false;
                                    lammoi2();
                                }
                                else
                                    MessageBox.Show("Thêm thành không công");
                            }
                        }
                    }
                }
            }
            if (key == 1)
            {
                if (txttennv.Text == "" || txttendangnhap.Text == "" || txtsdtnv.Text == "" || txtmk.Text == "" || txtdchinv.Text == "" || txtcmndnv.Text == "" || cbbgioitinhnv.Text=="")
                    MessageBox.Show("Vui lòng điền đầy thông tin!");
                else
                {
                    DialogResult d = MessageBox.Show("Bạn có chắc muốn sửa", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (d == DialogResult.Yes)
                    {
                        if (obj.suanv(txtmanv.Text, txttennv.Text, l, cbbgioitinhnv.Text, txtdchinv.Text, txtsdtnv.Text, txtcmndnv.Text, txttendangnhap.Text, txtmk.Text, datengaysinh.Value.ToString()) > 0)
                        {
                            if (txtmanv.Text == Ma)
                            {
                                MessageBox.Show("Tài khoản Admin của bạn đã được sửa thành công" + "\n" + "Để hoàn tất việc sửa thông tin bạn vui lòng chọn OK để đăng nhập lại", "Thông Báo");
                                this.Close();
                                ThreadDangXuat.Start();
                            }
                            else
                            {
                                MessageBox.Show("Sửa thành công");
                                string sql1 = "select * from nhanvien";
                                dt = obj.laydulieuBang(sql1);
                                hienthilistnhanvien(dt, listnhanvien);
                                key = -1;
                                lammoi3();
                                nutSua.Enabled = true;
                                nutthem.Enabled = true;
                                nutXoa.Enabled = true;
                                nutLuu.Enabled = false;
                            }
                        }
                        else
                            MessageBox.Show("Sửa thành không công");
                    }
                }
            }
        }
        #endregion

        #region Hủy Nhân Viên
        private void nuthuy_Click(object sender, EventArgs e)
        {
            listnhanvien.SelectedItems.Clear();
            key = -1;
            lammoi2();
            nutLuu.Enabled = false;
            nutthem.Enabled = true;
            nutXoa.Enabled = true;
            nutSua.Enabled = true;
        }
        #endregion

        #region Đổi Màu Nút
        private void nutthem_MouseHover(object sender, EventArgs e)
        {
            nutthem.BackColor = Color.Cyan;
            nutthem.ForeColor = Color.Black;
        }

        private void nutthem_MouseLeave(object sender, EventArgs e)
        {
            nutthem.BackColor = Color.Gray;
            nutthem.ForeColor = Color.Cyan;
        }

        private void nutXoa_MouseHover(object sender, EventArgs e)
        {
            nutXoa.BackColor = Color.Cyan;
            nutXoa.ForeColor = Color.Black;
        }

        private void nutXoa_MouseLeave(object sender, EventArgs e)
        {
            nutXoa.BackColor = Color.Gray;
            nutXoa.ForeColor = Color.Cyan;
        }

        private void nutSua_MouseHover(object sender, EventArgs e)
        {
            nutSua.BackColor = Color.Cyan;
            nutSua.ForeColor = Color.Black;
        }

        private void nutSua_MouseLeave(object sender, EventArgs e)
        {
            nutSua.BackColor = Color.Gray;
            nutSua.ForeColor = Color.Cyan;
        }

        private void nutLuu_MouseHover(object sender, EventArgs e)
        {
            nutLuu.BackColor = Color.Cyan;
            nutLuu.ForeColor = Color.Black;
        }

        private void nutLuu_MouseLeave(object sender, EventArgs e)
        {
            nutLuu.BackColor = Color.Gray;
            nutLuu.ForeColor = Color.Cyan;
        }

        private void nutDangXuat_MouseHover(object sender, EventArgs e)
        {
            nutDangXuat.BackColor = Color.Cyan;
            nutDangXuat.ForeColor = Color.Black;
        }

        private void nutDangXuat_MouseLeave(object sender, EventArgs e)
        {
            nutDangXuat.BackColor = Color.Gray;
            nutDangXuat.ForeColor = Color.Cyan;
        }

        private void nuthuy_MouseHover(object sender, EventArgs e)
        {
            nuthuy.BackColor = Color.Cyan;
            nuthuy.ForeColor = Color.Black;
        }

        private void nuthuy_MouseLeave(object sender, EventArgs e)
        {
            nuthuy.BackColor = Color.Gray;
            nuthuy.ForeColor = Color.Cyan;
        }

        private void btnMini_MouseHover(object sender, EventArgs e)
        {
            btnMini.BackColor = Color.Cyan;
            btnMini.ForeColor = Color.Black;
        }

        private void btnMini_MouseLeave(object sender, EventArgs e)
        {
            btnMini.BackColor = Color.Gray;
            btnMini.ForeColor = Color.Cyan;
        }

        private void btnExit_MouseHover(object sender, EventArgs e)
        {
            btnExit.BackColor = Color.Cyan;
            btnExit.ForeColor = Color.Black;
        }

        private void btnExit_MouseLeave(object sender, EventArgs e)
        {
            btnExit.BackColor = Color.Gray;
            btnExit.ForeColor = Color.Cyan;
        }
        #endregion

        private void txtsdtnv_TextChanged(object sender, EventArgs e)
        { }
    }
}
